1. Field of the Invention
This invention relates to the field of networked computer systems.
2. Background Art
Computer users continue to desire high performance computing experiences in ever-changing computer environments. The computing paradigm is shifting. New architectures are emerging which require new solutions to deal with the need for a high performance computing experience. One such architecture is that of the thin-client computing system.
In the thin-client architecture, the functionality of the end user computer is reduced to the point that, for the most part, only input and output capabilities exist. The end user device is connected over a high bandwidth computer network to a more powerful server computer which performs all the functions traditionally associated with the personal computer, such as executing computer programs and processing data.
Thus, there is a trend to consolidate the processing for a vast number of users on a small number of powerful systems. The idea of “web-hosted” applications fits this model. The actual processing for all the users is concentrated on these shared client or consolidated client machines. They can be called consolidated client machines because, although they are often the equivalent of large server machines, they are performing the traditional role of the client in a client/server architecture, albeit for a large number of users. This type of architecture is economically beneficial because, typically, only a small portion of the user population needs to use these systems at any given time.
There are times when it is desirable to operate ordinary, pre-existing, computer programs on a consolidated or shared client system. Ordinary, pre-existing programs were typically designed for a single-user personal computers and workstations. On single-user personal computers and workstations, resources are plentiful because they are dedicated to the needs of one user operating one machine. As a result, many of the programs written for personal computers and workstations continue to consume resources (processing power and random access memory, for instance) even when the user stops interacting with them. Two examples of such applications are a screen saver or a web browser displaying animations.
In the shared client architecture, one could have 1000 users of the consolidated client, but only 100 end user terminals. Therefore, in this example, a maximum of 100 of the 1000 users (i.e. 10%) can be interacting with their applications simultaneously. If each of the unconnected users' programs continued to consume even a negligible amount of resources (for instance 0.2%), the consolidated client system would be overloaded and would not be able to perform any actions for the connected users because the 900 inactive users' programs, each of which consumes 0.2% of the system, would require 180% of the consolidated client's resources.
On a single-user system, a small load by a dormant application, such as a screen saver, would constitute a small, usually unnoticeable, extra load on the system. On consolidated client systems, however, this small load may be multiplied by tens, hundreds, or even thousands of users of the shared system. Thus, the small extra overhead these programs impose can consume all of the resources on the shared system, even when no useful work is being done.
The evolution that led to this problem is better understood by reviewing the development of network computing. The rise of the internet has resulted in the proposed use of so-called “network computers.” A network computer is a stripped down version of a personal computer with less storage space, less memory, and often less computational power. The idea is that network computers will access data through the internet, and only those applications that are needed for a particular task will be provided to the network computer. When the applications are no longer being used, they are not stored on the network computer.
Recently, a new computer system architecture referred to as the virtual desktop architecture has emerged. This system provides for a re-partitioning of functionality between a central server installation and the user hardware. Data and computational functionality are provided by data sources via a centralized processing arrangement. At the user end, all functionality is substantially eliminated except that which generates output to the user (e.g. display and speakers), takes input from the user (e.g. mouse and keyboard) or other peripherals that the user may interact with (e.g. scanners, cameras, removable storage, etc.)
All computing is done by one or more consolidated client servers acting as central data sources and the computation is done independently of the destination of the data being generated. The output of a data source is provided to a terminal, referred to herein as a “Desktop Unit” (DTU). The DTU is capable of receiving the data and displaying the display data generated by the programs executing on the consolidated client servers.
The virtual desktop system architecture may be analogized to other highly partitioned systerns. For example, a public telephone company maintains powerful and sophisticated processing power and large databases at central offices. However, the DTU, (e.g., the telephone handset), is relatively simple and does not require upgrading when new features or services are added by the telephone company. The telephone itself becomes an appliance of low cost and extremely low obsolescence. Simnilarly, the display monitor of most computer systems has low obsolescence, and is typically retained through most desktop system upgrades.
The provision of services in the virtual desktop system architecture revolves around an abstraction referred to herein as a “session.” A session is a representation of those services which are executing on behalf of a user at any point in time. The session abstraction is maintained by facilities known as the authentication and session managers, whose duty it is to maintain the database of mappings between tokens (i.e., unique identifiers bound to smart cards or other authentication mechanisms) and sessions, and to manage the services which make up each session. For each user that the system is aware of there can be one or more sessions. The session manager allows sessions to be configured and new sessions to be created.
Many sessions (e.g., a group of running applications) routinely execute on each consolidated client server. Since the central server computers may be executing multiple sessions for multiple users, and these running applications may comprise software designed to be run under a traditional architecture, for example, a personal computer where the user has a dedicated processor and memory, these sessions can potentially consume a tremendous amount of resources. These resources can be consumed even when the user is not interacting with the session, as they were not designed for consolidated client machines.
Historically, the control over the manner in which running applications consume resources was done manually. An operator would monitor system resources and start and stop applications or adjust their priorities as needed. In some systems, the application with the input focus (i.e., the application that will receive typed input) is given a boost in its priority. However, these strategies break down in the shared client computing architecture because of the vast number of DTUs or terminals that may connect to a shared client, and the diversity and unpredictability of the nature of the sessions. Clearly, it is necessary to find a way to improve the utilization of resources in a shared client computing environment.